<?php 
//商品类型模型类
class GoodsTypeModel extends Model{
	public $table='goods_type';	
	/**
	 * 自动验证
	 * @var arrayarray(' 表单字段名 ',' 验证方法 ',' 错误信息 ',' 验证条件 ',' 验证时机 ')
	 *
	 *后面的函数必须执行 create 或 validate 模型方法，才会执行自动验证
	 */ 
	public $validate=array(
		array('cat_name','nonull','类型名称不能为空',2,3),
		array('cat_name','isHasCatName','名称已经存在',2,3)
	);
	/**
	 * 验证模型不同重名
	 * 1 添加时只是验证是否已有类型名称
	 * 2 修改时，如果有除自身以外重名的模型
	 * @param  [type]  $name  [字段名]
	 * @param  [type]  $value [字段值]
	 * @param  [type]  $msg   [错误信息]
	 * @param  [type]  $arg   [参数]
	 * @return boolean        [description]
	 */	
	// php自定义验证方法
	public function isHasCatName($name,$value,$msg,$arg){
		if($id=Q('get.cat_id')){
			//编辑类型时
			if(M('goods_type')->where("cat_id<>$id and cat_name ='$value'")->find()){
				return $msg;
			}else{
				return true;
			}
		}else{
			//添加类型时
			if(M('goods_type')->where("cat_name='$value'")->find()){
				return $msg;
			}else{
				return true;
			}
		}
		// if($id=Q('id'))$map['id']=array('NEQ',$id);
		// $map['cat_name']=array('EQ',$value);
		// return M('goods_type')->where($map)->find()?$msg:true;
	}
	
	//添加商品类型
	public function addGoodsType(){
		if($this->create()){//自动处理函数,调用自动验证
			if($this->add()){
				return	$this->updateCache();
			}else{
				$this->error='添加失败';
			}
		}
	}

	//修改商品类型
	public function editGoodsType(){
		if($this->create()){
			if($this->save()){
				return	$this->updateCache();
			}else{
				$this->error='修改失败';
			}
		}
	}

	//删除商品类型
	public function delGoodsType(){
	//先删除类型属性,再删除商品类型
		$id =Q('cat_id',0,'intval');
		//cat_id不是类型属性表的主键 所以以条件的形式删除
		M('attribute')->where("cat_id=".$id)->del();
		//直接按类型属性表的主键id删除
		$this->del($id);
		return $this->updateCache();
	}
	
	//更新缓存
	public function updateCache(){
		$data = $this->all();
		foreach($data as $d){
			$cache[$d['cat_id']]=$d;
		}
		return S('goods_type',$cache);
	}

	/**
	 * S 缓存函数
	 * @param  [type]  $name    [缓存名称]
	 * @param  boolean $value   [缓存内容]
	 * @param  [type]  $expire  [缓存时间]
	 * @param  [type]  $options [缓存参数]
	 * @return [type]           [description]
	 */
	// S($name, $value = false, $expire = null, $options)
// 	缓存数据
// 1  S('houdunwang',' 后盾网 ');
// 2  echo S('houdunwang');

// 删除缓存
// 1  S('houdunwang',null)

// 设置缓存驱动
// 1  S('houdunwang','bbs.houdunwang.com',1440,array('dir'=>'cache','driver'=>'file','zip'=
// >true));
// 将数据缓存到 cache 目录，以 file 文件形式缓存，启用数据压缩

}//商品类型模型类结束